package arithmetic;

import java.util.Scanner;

/**
 * HJ31 单词倒排
 * 1.StringBuffer.append()
 * 2.StringBuffer:线程安全，频繁拼接字符串时，避免了多次创建对象
 * 3.Ascii码：A~Z/65~90 , a~z/97~122
 * 描述
 * 对字符串中的所有单词进行倒排。
 *
 * 说明：
 *
 * 1、构成单词的字符只有26个大写或小写英文字母；
 *
 * 2、非构成单词的字符均视为单词间隔符；
 *
 * 3、要求倒排后的单词间隔符以一个空格表示；如果原字符串中相邻单词间有多个间隔符时，倒排转换后也只允许出现一个空格间隔符；
 *
 * 4、每个单词最长20个字母；
 *
 * 数据范围：字符串长度满足 1≤n≤10000
 * 输入描述：
 * 输入一行，表示用来倒排的句子
 *
 * 输出描述：
 * 输出句子的倒排结果
 *
 * 示例1
 * 输入：
 * I am a student
 * 复制
 * 输出：
 * student a am I
 * 复制
 * 示例2
 * 输入：
 * $bo*y gi!r#l
 * 复制
 * 输出：
 * l r gi y bo
 */
public class TestHW31 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        // while (in.hasNextInt()) { // 注意 while 处理多个 case
        //     int a = in.nextInt();
        //     int b = in.nextInt();
        //     System.out.println(a + b);
        // }
        String str = "";
        while (in.hasNextLine()) {
            str = in.nextLine();
        }
        if (str.length() < 1 || str.length() > 10000)return;
        dealWithString(str);
    }

    public static void dealWithString(String str) {
        //处理非构成单词的字符
        int index = 0;
        StringBuffer strBuff = new StringBuffer();
        while (index < str.length()) {
            char ch = str.charAt(index);
            if ((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122)) {
                strBuff.append(ch);
            } else {
                strBuff.append(" ");
            }
            index++;
        }
        //倒序输出单词
        String[] strs = strBuff.toString().split(" ");
        int index1 = strs.length-1;
        strBuff = new StringBuffer();
        while(index1>-1){
            strBuff.append(strs[index1]+" ");
            index1--;
        }
        System.out.println(strBuff.toString());

    }
}
